package com.IO流.处理流.Exercise练习;

import java.io.*;
import java.util.Properties;
@SuppressWarnings("all")
/**
 * 1.创建Dog对象，将dog对象的属性用 dog.properties 相应的内容完成初始化
 * 2.初始化完后将 dog对象序列化到 dog.dat文件；
 * 3.再将序列化的文件中的dog对象反序列化，输出其信息
 * java-code/src/dog.properties
 */
public class E04 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        String filepath = "java-code/src/dog.properties";
        Properties prop = new Properties();                 ///创建properties
        prop.load(new FileReader(filepath));                ///加载dog.properties文件到 prop

        /// 赋值
        Dog dog = new Dog();                                ///创建狗，给狗的属性赋值
        dog.setName(prop.getProperty("name"));
        dog.setAge(Integer.parseInt(prop.getProperty("age")));
        dog.setColor(prop.getProperty("color"));

        System.out.println(dog);                             ///输出狗的属性

        /// 序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:/JAVA_test/dog.dat"));   ///用来序列化的对象输出流；
        oos.writeObject(dog);                              ///将dog序列化  （前提Dog实现了Serializable）
        System.out.println("dog序列化成功");
        oos.close();

        /// 反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:/JAVA_test/dog.dat"));  ///将序列化的对象反序列化成狗
        Object o = ois.readObject();                        ///反序列化 读取狗， 注意：拿出来是Object类，将他转成Dog才能用自己的方法
        Dog d = (Dog) o;                                    ///向下转型
        System.out.println(d.getAge() +" " +d.getColor() + " " +d.getName());
        ois.close();
    }
}
